class Solution:
    def findDuplicates(self, nums):
        res = []
        for num in nums:
            index = abs(num) - 1
            if nums[index] < 0:
                res.append(abs(num))
            else:
                nums[index] = -nums[index]
        return res
if __name__ == '__main__':
    nums = [4,3,2,7,8,2,3,1]
    print(Solution().findDuplicates(nums))
# 思路：
# 遍历数组时，对每个数 num，找到对应索引 abs(num) - 1

# 将这个位置的数变成负数（表示“我们见过这个数了”）

# 如果发现这个位置已经是负的，说明这个数已经出现过 → 是重复项